﻿using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Xml.Linq;
using SERIX.Util;
using Biblioteca.DataBase;
using System.Collections.Generic;
using System.Data.Common;
using Pms.Utils;
using Biblioteca.Utils;

namespace SERIX
{
    /*
     * Autor      : IT-Developer1
     * Data       : 02/04/2010 11:03:48
     * Descricao  : 
     * Alteracoes : 
     * 
     */
    public partial class MedidasIndicadores : Seguranca
    {
        string _idt;
        CriteriosPesquisa criteriosPesquisa;

        protected void Page_Load(object sender, EventArgs e)
        {
            base.OnLoad(e);

            SetaDadosMestre();
            InicializarCriteriosPesquisa();
            if (!RestaurarPesquisa() && !Page.IsPostBack)
            {
                SalvarPesquisa();
                Session["PagAtual"] = 1;
                Pesquisar();
            }
        }

        private void SetaDadosMestre()
        {
            string login = UsuAut.Login;
            if (!IsPostBack)
            {
                if (!String.IsNullOrEmpty(Request["idt"]))
                {
                    _idt = Server.UrlDecode(Criptografia.Descriptografar(Request["idt"]));
                    Session[Page.ToString() + "_IdtMestre"] = _idt;
                }
                DataTable dados = CIndicadoresAcoes.ObterDescMestre(_idt, login);
                //lblPrograma.Text = dados.Rows[0]["NOM_PROG"].ToString();
                //lblAcao.Text = dados.Rows[0]["DSC_ACAO"].ToString();
                if (dados.Rows.Count > 0)
                    lblIndicador.Text = dados.Rows[0]["DSC_IND"].ToString();
            }
            else
            {
                _idt = (string)Session[Page.ToString() + "_IdtMestre"];
            }
        }

        private void InicializarCriteriosPesquisa()
        {
            criteriosPesquisa = (CriteriosPesquisa)Session[Page.ToString()];
        }

        private void SalvarPesquisa()
        {
            if (criteriosPesquisa == null)
            {
                criteriosPesquisa = new CriteriosPesquisa() { FiltroSimples = "", PaginaAtual = 1 };
                Session[Page.ToString()] = criteriosPesquisa;
            }
            else
            {
                criteriosPesquisa.FiltroSimples = "";
                criteriosPesquisa.PaginaAtual = 1;
            }
        }

        private bool RestaurarPesquisa()
        {
            if (!IsPostBack && criteriosPesquisa != null)
            {
                Pesquisar();
                return true;
            }
            return false;
        }

        protected void Todos()
        {
            string login = UsuAut.Login;
            lblFiltro.Text = "Filtro: Todas as Medidas do Indicador";
            string SQL = @"SELECT TM.IDT_TPO_MED, TM.DSC_TPO_MED, NVL(MI.IDT_IND, 0) IDT_IND, NVL(ordem_MIR, '') ordem_MIR
                            FROM Serix.SRX_TIPOS_MEDIDAS TM
                                LEFT JOIN SERIX.srx_medidas_indicadores MI on mi.idt_tpo_med = tm.idt_tpo_med and mi.idt_ind = :IDT
                            ORDER BY TM.DSC_TPO_MED";
            Query qy = null;
            try
            {
                qy = new Query(BiblioPMS.ObterConexao(BiblioPMS.aplicacaoSNG, login, BiblioPMS.Demo), SQL);
                qy.AdicionarParametro("IDT", DbType.String, _idt);
                gridView.DataSource = qy.ObterDataTable();
                gridView.DataBind();
                //Navegador1.CarregueBotoes(qy.QtdLinhas());
            }
            catch (Exception e)
            {
                if (qy.EstadoConexao() == ConnectionState.Open)
                    qy.FecharConexao();
            }
            finally
            {
                if (qy.EstadoConexao() == ConnectionState.Open)
                    qy.FecharConexao();
            }
        }

        protected void Pesquisar()
        {
            Todos();
        }

        protected void Ok_Button_Click(object sender, EventArgs e)
        {
            try
            {
                string login = UsuAut.Login;
                Dictionary<string, string> medidas = new Dictionary<string, string>();

                DropDownList ddl = null;
                foreach (GridViewRow row in gridView.Rows)
                {
                    CheckBox cbx = (CheckBox)row.FindControl("ckbAssociado");
                    if (cbx.Enabled && cbx.Checked)
                    {
                        ddl = (DropDownList)row.FindControl("ddlOrdem");

                        if (medidas.Values.Contains(ddl.SelectedValue))
                        {
                            lblErro.Text = "A ordem das medidas devem ser diferentes.";
                            lblErro.Visible = true;
                            return;
                        }
                        medidas.Add(Convert.ToString(gridView.DataKeys[row.RowIndex]["IDT_TPO_MED"]), ddl.SelectedValue);
                    }
                }
                if (medidas.Count > 3)
                {
                    lblErro.Text = "Apenas 3 medidas podem ser selecionadas.";
                    lblErro.Visible = true;
                    return;
                }
                if (!medidas.Values.Contains("1"))
                {
                    lblErro.Text = "Escolha uma medida de ordem 1.";
                    lblErro.Visible = true;
                    return;
                }
                CMedidasIndicadores.MedidasEmLote(_idt, medidas, login);
                //lblErro.Text = string.Format("Atualização realizada com sucesso! Em {0}", DateTime.Now.ToLongTimeString());
                //lblErro.Visible = true;
                Response.Redirect("Indicadores.aspx");
            }
            catch (Exception ex)
            {
                lblErro.Text = "*Erro: " + ex.Message;
                lblErro.Visible = true;
            }
        }

        protected void Cancelar_Button_Click(object sender, EventArgs e)
        {
            Response.Redirect("Indicadores.aspx");
        }

        protected void gridView_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                string marcado = ((DataRowView)e.Row.DataItem).Row["IDT_IND"].ToString();
                CheckBox cb = (CheckBox)e.Row.FindControl("ckbAssociado");
                cb.Checked = marcado != "0";
                cb = (CheckBox)e.Row.FindControl("ckbMedChave");
            }
        }

        protected void lblErro_Load(object sender, EventArgs e)
        {
            lblErro.Text = "";
            lblErro.Visible = false;
        }
    }
}
